/*
 *   项目名称：rpc-demo
 *   文件名称：com.xiaolon.rpc.proxy.ServiceProxyFactory
 *
 *   创建人：  ZHOU XIAO LONG
 *   创建日期：2024/12/3
 *
 */
package com.xiaolon.rpc.proxy;

import com.xiaolon.rpc.RpcApplication;

import java.lang.reflect.Proxy;

/*
 * 类描述：ServiceProxyFactory
 * 服务代理工厂(用于创建代理对象)
 */
public class ServiceProxyFactory {

    /**
     * 根据服务类型获取代理对象
     * @param serviceClass
     * @return
     * @param <T>
     */
    public static <T> T getProxy(Class<T> serviceClass){
        if(RpcApplication.getRpcConfig().isMock()){
            return getMockProcy(serviceClass);
        }
        return (T) Proxy.newProxyInstance(
                serviceClass.getClassLoader(),
                new Class[]{serviceClass},
                new ServiceProxy()
        );
    }

    /**
     * 根据服务类型货物 Mock 代理对象
     * @param serviceClass
     * @return
     * @param <T>
     */
    public static <T> T getMockProcy(Class<T> serviceClass){
        return (T) Proxy.newProxyInstance(
                serviceClass.getClassLoader(),
                new Class[]{serviceClass},
                new MockServiceProxy());
    }

}
